package com.yootk.dbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnection {
    public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";  // 数据库驱动
    public static final String DBURL = "jdbc:mysql://localhost:3306/yootk?serverTimezone=GMT"; // 连接地址
    public static final String USER = "root"; // 用户名
    public static final String PASSWORD = "root520"; // 密码
    public static final ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<>();

    private DatabaseConnection() {
    } // 构造方法私有化禁止外部实例化本类对象

    private static Connection rebuildConnection() { // 获取新的数据库连接
        Connection conn = null; // 声明连接接口对象
        try {
            Class.forName(DBDRIVER); // 加载驱动
            conn = DriverManager.getConnection(DBURL, USER, PASSWORD); // 连接数据库
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static Connection getConnection() { // 获取数据库连接
        Connection conn = THREAD_LOCAL.get(); // 获取当前线程连接
        if (conn == null) { // 当前没有连接保存
            conn = rebuildConnection(); // 创建新的连接
            THREAD_LOCAL.set(conn); // 保存数据库连接
        }
        return conn; // 返回数据库连接
    }

    public static void close() { // 关闭数据库连接
        Connection conn = THREAD_LOCAL.get(); // 获取当前线程连接
        if (conn != null) { // 如果存在连接对象
            try {
                conn.close(); // 连接关闭
            } catch (SQLException e) {
                e.printStackTrace();
            }
            THREAD_LOCAL.remove(); // 移除对象
        }
    }
}
